Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

datetime απο excel import

Îåêßíçóå áðü ôï ìÝëïò evagelos. Τελευταία δημοσίευση από το μέλος evagelos στις 06-08-2013, 13:13. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-08-2013, 12:41 73771

    datetime απο excel import

    Γεια σας παιδια,

    κανω αναγνωση απο OpenXml διαφορα κελια και σε ενα απο αυτά εχει την μορφή ωρας πχ: 9:49:00 μμ

    στο κωδικα που διαβαζω μου φερνει την τιμή 0.90902777777777777 που ειναι η ωρα καθεαυτή (σωστα;). θελω να το μετατρεψω σε σημερινη μερα την αντίστοιχη ωρα

    οταν δοκιμαζω το αυτό:

    double d = 0.90902777777777777;
    var asd = DateTime.FromOADate(d).ToString("HH:mm");
    var aaa1 = DateTime.Now.ToString("d");
    string asfff = aaa1 + " " + asd;
    Datetime myDt = DateTime.Parse(asfff, System.Globalization.CultureInfo.InvariantCulture);

     

    παιζει μια χαρά

    παω να το προσαρμόσω στον κωδικα μου και μου βγάζει μηνυμα "Not a legal OleAut date"

            private DateTime getdatetime(string minutes)
            {
                var mydate = DateTime.Now.ToString("d");           
                var asd = Convert.ToDouble(minutes);

                var mymin = DateTime.FromOADate(Convert.ToDouble(minutes)).ToString("HH:mm");

                string tryparse = mydate + " " + mymin;
                return DateTime.Parse(tryparse, System.Globalization.CultureInfo.InvariantCulture);
            }

     

    αυτό που βλέπω είναι οτι οταν το κανω Convert.ToDouble τοτε το αλλαζει και το κανει 90902777777777776.0

    τι πρεπει να κανω; ευχαριστώ

  •  06-08-2013, 13:09 73772 σε απάντηση της 73771

    Απ: datetime απο excel import

    Το τί θεωρείται υποδιαστολή εξαρτάται από το Culture της εφαρμογής σου, το οποίο by default είναι αυτό που ορίζει ο κάθε χρήστης στο regional settings. Για να αποφύγεις τη χρήση του user local πρέπει οπουδήποτε κάνεις μετατροπές από/σε string να περάσεις το CultureInfo.InvariantCulture ως παράμετρο, πχ. την Convert.ToDouble(string,IFormatProvider). Μάλιστα ο compiler σου βγάζει και σχετικό warning, και ο Resharper σου το διορθώνει αυτόματα.

    To InvariantCulture χρησιμοποιεί πάντα το '.' ως υποδιαστολή και το ',' ως χιλιάδα. 

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-08-2013, 13:13 73773 σε απάντηση της 73772

    Απ: datetime απο excel import

    Σε ευχαριστώ. ολα επαιξαν μια χαρα

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems